※以下內容皆是新手撰寫,內容可能不完全正確
寫報告寫到一臉生無可戀… classes的東西稍多,拆成兩部分記錄。
今天的筆記內容又是個C#中很重要的東西 – 類別(classes) 。之前幾篇幾乎都有用到,卻未詳細解釋其特性跟用法。類別像是資料類型的藍圖,定義物件內有什麼東西、能做什麼運算。物件是類別的實例(instance)。構成類別的方法和變數亦稱作 類別成員(class members) 。
定義一個類別用的是 class關鍵字(class keyword) ,前綴一個存取規格符。存取規格符定義的是類別和類別成員的 存取規則(access rules) ,若是沒有特別定義的話,類別的預設存取規格符是internal、類別成員的預設存取規格符是private。
接著就類似前面定義其他東西,類別名稱和一對 大括號(curly braces) (有學妹問我什麼是curly braces,就順便補充一下)。括號裡面的是類別成員,資料類型代表變數的資料類型、傳回類型指的是可能傳回的類型(聽起來像廢話,但也有可能沒有傳回東西)。從類別外頭使用其類別成員,用英文句點(.)隔開。
拿之前第六篇寫的CubeApplication舉例,再看一遍(絕對不是我懶),解釋以上class中的各個部分:
using System;
namespace CubeApplication
{
class Cube
{
int height; //定義方塊的長寬高
int width;
int length;
public void numbers()
{
height = 5; //給值
width = 5;
length = 5;
}
public int value()
{ return height * length * width; }
public void calc()
{
Console.WriteLine("Height: {0}", height);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Volume: {0}", value());
}
}
class calcube
{
static void Main(string[] args)
{
Cube c = new Cube(); //宣告Cube類型的某c
c.numbers(); //使用各種類別成員
c.calc();
Console.ReadLine();
}
}
}
這串東西的結果:
Height: 5
Width: 5
Length: 5
Volume: 125
成員函數及封裝(member functions & encapsulation)
成員函數跟類別中其他變數很像,在其類別內定義,同時可以用於本身所在類別內其他物件。成員變數則可以當作物件的屬性,存取規格是private(達到封裝),必須用public的成員函數使用。
例:public void length1(int len){ length = len; }
今天先到這兒,下一篇講C#的建構器、破壞器和C#中的靜態成員~
參考資料:
(a) Tutorialspoint; C# - Classes
https://www.tutorialspoint.com/csharp/csharp_classes.htm